2021a 第09回:Python 場合分け
解説
提出課題に多少の減点がかかっている人がいます
「コードセル」と「ランタイム」を理解しましょう!
https://gyazo.com/840102d305b21c9f54302c23a50202ec
みなさんがブラウザ上でcolaboratoryを開くと、googleのサーバー上に1つのpython実行環境(=ランタイム)が起動します
terminal / powershellを1つ起動してpythonコマンドを起動しっぱなしにしてるイメージ
コードセルを実行するたびに、起動しっぱなしの「ランタイム」がコードを処理して結果を返却する
ランタイムは起動しっぱなしであり、前の状態を引き継いでいる!!!
code:python
print(math.sqrt(a))
こんなコードを突然実行しても動いてしまうことがある
本来は import math や a = 3 等が必要
mathってなんぞ?となったり
aってなんぞ?ってなる
別のコードセルにて、事前に一度でも上記が実行されていれば、↑の行だけで動いてしまう
課題提出のコードとしては「正しくない」評価になるため、多少の減点が入ります
余談:「コードは正しいはずなのに動かない!」という方によく「ランタイムの再起動」をオススメしているのは上記が理由 他のコードセルが産み出した「変な状態」が悪さをしていることがあるので、環境自体をリセットしている
やったね!
講義
応用的な話
code:python
weight = int(input('体重を入力してください(kg):'))
を実行したときに文字列を与えるとエラーになりますよね?
https://gyazo.com/ee4268310d30721cbb0972d42374095b
実際にシステムを構築する際には十二分にありえるエラーなので、授業範囲外ですが解決策を教えておく
code:python
weight_s = input('体重を入力してください(kg):')
try:
weight = int(weight_s)
# あとはここで必要な処理を実施
# 処理A
# 処理B
# 処理C
except ValueError:
print('有効な整数を入力してください')
# 処理D
読み方
weight_s = 体重の変数なんだが、「文字列型」なので末尾に_s を付記してわかりやすくしてる
try = 後続のインデントしてある範囲の処理を試してみるよ。エラーが出たら処理を中断してexcept以降を見に行ってね
except = こういうエラーが起こることは予期してるので、これが出てきたらこうしてね
勘所
処理Dは例外発生有無に関係なく実行されることに留意のこと
中断対象になるのは「try: 以後のインデントされている範囲のみ」
演習